# 高阶函数，是把一个函数当作另一个函数的参数传入
"""
# 函数作用单一


def add_num(a, b):
    return abs(a) + abs(b)


print(add_num(10, -20))


def sum_num(a, b, f):
    return f(a) + f(b)


print(sum_num(10, -15, abs))
print(sum_num(100.8, -15, round))
"""

# 内置函数
# map(func,list) 将序列中的元素作为func的参数，并将返回值返回到相应的位置，map返回一个map对象
"""
lst = [1, 2, 3, 4]


def func(x):
    return x**2


rlt = map(func, lst)  # rlt接收到的是一个可迭代对象 <map object at 0x000001CCCF073FA0>

print(list(rlt))
"""

# reduce(func,lst) 将func要两个参数，每次func的返回值都会和序列的下一个元素做累计计算
"""
import functools
lst = [1, 2, 3, 4]


def func(a, b):
    return a+b


result = functools.reduce(func, lst)
print(result)
"""

# filter(func,list) 将func的返回值添加到一个新序列,返回一个filter对象
lst = [1, 2, 3, 4]


def func(x):
    return x % 2 == 0


result = filter(func, lst)
print(list(result))